{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Exploration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number of images: 999\n",
      "number of annotations: 999\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "path2train=\"./data/training_set/\"\n",
    "\n",
    "imgsList=[pp for pp in os.listdir(path2train) if \"Annotation\" not in pp]\n",
    "anntsList=[pp for pp in os.listdir(path2train) if \"Annotation\" in pp]\n",
    "print(\"number of images:\", len(imgsList))\n",
    "print(\"number of annotations:\", len(anntsList))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['425_HC.png', '804_HC.png', '603_HC.png', '082_HC.png'],\n",
       "      dtype='<U11')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "np.random.seed(2019)\n",
    "rndImgs=np.random.choice(imgsList,4)\n",
    "rndImgs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pylab as plt\n",
    "from PIL import Image\n",
    "from scipy import ndimage as ndi\n",
    "from skimage.segmentation import mark_boundaries\n",
    "from torchvision.transforms.functional import to_tensor, to_pil_image\n",
    "import torch\n",
    "\n",
    "def show_img_mask(img, mask):\n",
    "    if torch.is_tensor(img):\n",
    "        img=to_pil_image(img)\n",
    "        mask=to_pil_image(mask)\n",
    "        \n",
    "    img_mask=mark_boundaries(np.array(img), \n",
    "                        np.array(mask),\n",
    "                        outline_color=(0,1,0),\n",
    "                        color=(0,1,0))\n",
    "    plt.imshow(img_mask)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "for fn in rndImgs:\n",
    "    path2img = os.path.join(path2train, fn)\n",
    "    path2annt= path2img.replace(\".png\", \"_Annotation.png\")\n",
    "    img = Image.open(path2img)\n",
    "    annt_edges = Image.open(path2annt)\n",
    "    mask = ndi.binary_fill_holes(annt_edges)        \n",
    "\n",
    "    plt.figure()\n",
    "    plt.subplot(1, 3, 1) \n",
    "    plt.imshow(img, cmap=\"gray\")\n",
    "\n",
    "    plt.subplot(1, 3, 2) \n",
    "    plt.imshow(mask, cmap=\"gray\")\n",
    "\n",
    "    plt.subplot(1, 3, 3) \n",
    "    show_img_mask(img, mask)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plt.figure()\n",
    "plt.subplot(1, 3, 1) \n",
    "plt.imshow(img, cmap=\"gray\")\n",
    "plt.axis('off')\n",
    "\n",
    "plt.subplot(1, 3, 2) \n",
    "plt.imshow(mask, cmap=\"gray\")\n",
    "plt.axis('off')    \n",
    "\n",
    "plt.subplot(1, 3, 3) \n",
    "show_img_mask(img, mask)\n",
    "plt.axis('off')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from albumentations import (\n",
    "    HorizontalFlip,\n",
    "    VerticalFlip,    \n",
    "    Compose,\n",
    "    Resize,\n",
    ")\n",
    "\n",
    "h,w=128,192\n",
    "transform_train = Compose([ Resize(h,w), \n",
    "                HorizontalFlip(p=0.5), \n",
    "                VerticalFlip(p=0.5), \n",
    "              ])\n",
    "\n",
    "\n",
    "transform_val = Resize(h,w)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "## Creating Custom Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from torch.utils.data import Dataset\n",
    "from PIL import Image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from torchvision.transforms.functional import to_tensor, to_pil_image\n",
    "\n",
    "class fetal_dataset(Dataset):\n",
    "    def __init__(self, path2data, transform=None):      \n",
    "\n",
    "        imgsList=[pp for pp in os.listdir(path2data) if \"Annotation\" not in pp]\n",
    "        anntsList=[pp for pp in os.listdir(path2train) if \"Annotation\" in pp]\n",
    "\n",
    "        self.path2imgs = [os.path.join(path2data, fn) for fn in imgsList] \n",
    "        self.path2annts= [p2i.replace(\".png\", \"_Annotation.png\") for p2i in self.path2imgs]\n",
    "\n",
    "        self.transform = transform\n",
    "    \n",
    "    def __len__(self):\n",
    "        return len(self.path2imgs)\n",
    "      \n",
    "    def __getitem__(self, idx):\n",
    "        path2img = self.path2imgs[idx]\n",
    "        image = Image.open(path2img)\n",
    "\n",
    "        path2annt = self.path2annts[idx]\n",
    "        annt_edges = Image.open(path2annt)\n",
    "        mask = ndi.binary_fill_holes(annt_edges)        \n",
    "        \n",
    "        image= np.array(image)\n",
    "        mask=mask.astype(\"uint8\")        \n",
    "\n",
    "        if self.transform:\n",
    "            augmented = self.transform(image=image, mask=mask)\n",
    "            image = augmented['image']\n",
    "            mask = augmented['mask']            \n",
    "\n",
    "        image= to_tensor(image)            \n",
    "        mask=255*to_tensor(mask)            \n",
    "        return image, mask\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "fetal_ds1=fetal_dataset(path2train, transform=transform_train)\n",
    "fetal_ds2=fetal_dataset(path2train, transform=transform_val)\n",
    "print(len(fetal_ds1))\n",
    "print(len(fetal_ds2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "img,mask=fetal_ds1[0]\n",
    "print(img.shape, img.type(),torch.max(img))\n",
    "print(mask.shape, mask.type(),torch.max(mask))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "show_img_mask(img, mask)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Split data into train validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import ShuffleSplit\n",
    "\n",
    "sss = ShuffleSplit(n_splits=1, test_size=0.2, random_state=0)\n",
    "\n",
    "indices=range(len(fetal_ds1))\n",
    "\n",
    "for train_index, val_index in sss.split(indices):\n",
    "    print(len(train_index))\n",
    "    print(\"-\"*10)\n",
    "    print(len(val_index))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from torch.utils.data import Subset\n",
    "\n",
    "train_ds=Subset(fetal_ds1,train_index)\n",
    "print(len(train_ds))\n",
    "\n",
    "val_ds=Subset(fetal_ds2,val_index)\n",
    "print(len(val_ds))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plt.figure(figsize=(5,5))\n",
    "for img,mask in train_ds:\n",
    "    show_img_mask(img,mask)\n",
    "    break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plt.figure(figsize=(5,5))\n",
    "for img,mask in val_ds:\n",
    "    show_img_mask(img,mask)\n",
    "    break"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Creating DataLoader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from torch.utils.data import DataLoader\n",
    "train_dl = DataLoader(train_ds, batch_size=8, shuffle=True)\n",
    "val_dl = DataLoader(val_ds, batch_size=16, shuffle=False) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for img_b, mask_b in train_dl:\n",
    "    print(img_b.shape,img_b.dtype)\n",
    "    print(mask_b.shape, mask_b.dtype)\n",
    "    break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for img_b, mask_b in val_dl:\n",
    "    print(img_b.shape,img_b.dtype)\n",
    "    print(mask_b.shape, mask_b.dtype)\n",
    "    break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "torch.max(img_b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Creating the Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import torch.nn as nn\n",
    "import torch.nn.functional as F"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "class SegNet(nn.Module):\n",
    "    def __init__(self, params):\n",
    "        super(SegNet, self).__init__()\n",
    "        \n",
    "        C_in, H_in, W_in=params[\"input_shape\"]\n",
    "        init_f=params[\"initial_filters\"] \n",
    "        num_outputs=params[\"num_outputs\"] \n",
    "\n",
    "        self.conv1 = nn.Conv2d(C_in, init_f, kernel_size=3,stride=1,padding=1)\n",
    "        self.conv2 = nn.Conv2d(init_f, 2*init_f, kernel_size=3,stride=1,padding=1)\n",
    "        self.conv3 = nn.Conv2d(2*init_f, 4*init_f, kernel_size=3,padding=1)\n",
    "        self.conv4 = nn.Conv2d(4*init_f, 8*init_f, kernel_size=3,padding=1)\n",
    "        self.conv5 = nn.Conv2d(8*init_f, 16*init_f, kernel_size=3,padding=1)\n",
    "\n",
    "        self.upsample = nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True)\n",
    "\n",
    "        self.conv_up1 = nn.Conv2d(16*init_f, 8*init_f, kernel_size=3,padding=1)\n",
    "        self.conv_up2 = nn.Conv2d(8*init_f, 4*init_f, kernel_size=3,padding=1)\n",
    "        self.conv_up3 = nn.Conv2d(4*init_f, 2*init_f, kernel_size=3,padding=1)\n",
    "        self.conv_up4 = nn.Conv2d(2*init_f, init_f, kernel_size=3,padding=1)\n",
    "\n",
    "        self.conv_out = nn.Conv2d(init_f, num_outputs , kernel_size=3,padding=1)    \n",
    "    \n",
    "    def forward(self, x):\n",
    "        \n",
    "        x = F.relu(self.conv1(x))\n",
    "        x = F.max_pool2d(x, 2, 2)\n",
    "\n",
    "        x = F.relu(self.conv2(x))\n",
    "        x = F.max_pool2d(x, 2, 2)\n",
    "\n",
    "        x = F.relu(self.conv3(x))\n",
    "        x = F.max_pool2d(x, 2, 2)\n",
    "\n",
    "        x = F.relu(self.conv4(x))\n",
    "        x = F.max_pool2d(x, 2, 2)\n",
    "\n",
    "        x = F.relu(self.conv5(x))\n",
    "\n",
    "        x=self.upsample(x)\n",
    "        x = F.relu(self.conv_up1(x))\n",
    "\n",
    "        x=self.upsample(x)\n",
    "        x = F.relu(self.conv_up2(x))\n",
    "        \n",
    "        x=self.upsample(x)\n",
    "        x = F.relu(self.conv_up3(x))\n",
    "        \n",
    "        x=self.upsample(x)\n",
    "        x = F.relu(self.conv_up4(x))\n",
    "\n",
    "        x = self.conv_out(x)\n",
    "        \n",
    "        return x "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "params_model={\n",
    "        \"input_shape\": (1,h,w),\n",
    "        \"initial_filters\": 16, \n",
    "        \"num_outputs\": 1,\n",
    "            }\n",
    "\n",
    "model = SegNet(params_model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "model=model.to(device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "print(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from torchsummary import summary\n",
    "summary(model, input_size=(1, h, w))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Define Loss Function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def dice_loss(pred, target, smooth = 1e-5):\n",
    "\n",
    "    intersection = (pred * target).sum(dim=(2,3))\n",
    "    union= pred.sum(dim=(2,3)) + target.sum(dim=(2,3)) \n",
    "    \n",
    "    dice= 2.0 * (intersection + smooth) / (union+ smooth)    \n",
    "    loss = 1.0 - dice\n",
    "    \n",
    "    return loss.sum(), dice.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\n",
    "import torch.nn.functional as F\n",
    "\n",
    "def loss_func(pred, target):\n",
    "    bce = F.binary_cross_entropy_with_logits(pred, target,  reduction='sum')\n",
    "    \n",
    "    pred= torch.sigmoid(pred)\n",
    "    dlv, _ = dice_loss(pred, target)\n",
    "    \n",
    "    loss = bce  + dlv\n",
    "\n",
    "    return loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for img_v,mask_v in val_dl:\n",
    "    mask_v= mask_v[8:]\n",
    "    break\n",
    "\n",
    "for img_t,mask_t in train_dl:\n",
    "    break\n",
    "    \n",
    "\n",
    "\n",
    "print(dice_loss(mask_v,mask_v))\n",
    "loss_func(mask_v,torch.zeros_like(mask_v))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import torchvision\n",
    "\n",
    "def metrics_batch(pred, target):\n",
    "    pred= torch.sigmoid(pred)\n",
    "    _, metric=dice_loss(pred, target)\n",
    "    \n",
    "    return metric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def loss_batch(loss_func, output, target, opt=None):   \n",
    "    loss = loss_func(output, target)\n",
    "    \n",
    "    with torch.no_grad():\n",
    "        pred= torch.sigmoid(output)\n",
    "        _, metric_b=dice_loss(pred, target)\n",
    "    \n",
    "    if opt is not None:\n",
    "        opt.zero_grad()\n",
    "        loss.backward()\n",
    "        opt.step()\n",
    "\n",
    "    return loss.item(), metric_b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Optimizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from torch import optim\n",
    "opt = optim.Adam(model.parameters(), lr=3e-4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from torch.optim.lr_scheduler import ReduceLROnPlateau\n",
    "lr_scheduler = ReduceLROnPlateau(opt, mode='min',factor=0.5, patience=20,verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def get_lr(opt):\n",
    "    for param_group in opt.param_groups:\n",
    "        return param_group['lr']\n",
    "\n",
    "current_lr=get_lr(opt)\n",
    "print('current lr={}'.format(current_lr))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training the Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def loss_epoch(model,loss_func,dataset_dl,sanity_check=False,opt=None):\n",
    "    running_loss=0.0\n",
    "    running_metric=0.0\n",
    "    len_data=len(dataset_dl.dataset)\n",
    "\n",
    "    for xb, yb in dataset_dl:\n",
    "        xb=xb.to(device)\n",
    "        yb=yb.to(device)\n",
    "        \n",
    "        output=model(xb)\n",
    "        loss_b, metric_b=loss_batch(loss_func, output, yb, opt)\n",
    "        running_loss += loss_b\n",
    "        \n",
    "        if metric_b is not None:\n",
    "            running_metric+=metric_b\n",
    "\n",
    "        if sanity_check is True:\n",
    "            break\n",
    "    \n",
    "    loss=running_loss/float(len_data)\n",
    "    \n",
    "    metric=running_metric/float(len_data)\n",
    "    \n",
    "    return loss, metric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import copy\n",
    "def train_val(model, params):\n",
    "    num_epochs=params[\"num_epochs\"]\n",
    "    loss_func=params[\"loss_func\"]\n",
    "    opt=params[\"optimizer\"]\n",
    "    train_dl=params[\"train_dl\"]\n",
    "    val_dl=params[\"val_dl\"]\n",
    "    sanity_check=params[\"sanity_check\"]\n",
    "    lr_scheduler=params[\"lr_scheduler\"]\n",
    "    path2weights=params[\"path2weights\"]\n",
    "    \n",
    "    loss_history={\n",
    "        \"train\": [],\n",
    "        \"val\": []}\n",
    "    \n",
    "    metric_history={\n",
    "        \"train\": [],\n",
    "        \"val\": []}    \n",
    "    \n",
    "    \n",
    "    best_model_wts = copy.deepcopy(model.state_dict())\n",
    "    best_loss=float('inf')    \n",
    "    \n",
    "    for epoch in range(num_epochs):\n",
    "        current_lr=get_lr(opt)\n",
    "        print('Epoch {}/{}, current lr={}'.format(epoch, num_epochs - 1, current_lr))   \n",
    "\n",
    "        model.train()\n",
    "        train_loss, train_metric=loss_epoch(model,loss_func,train_dl,sanity_check,opt)\n",
    "\n",
    "        loss_history[\"train\"].append(train_loss)\n",
    "        metric_history[\"train\"].append(train_metric)\n",
    "        \n",
    "        model.eval()\n",
    "        with torch.no_grad():\n",
    "            val_loss, val_metric=loss_epoch(model,loss_func,val_dl,sanity_check)\n",
    "       \n",
    "        loss_history[\"val\"].append(val_loss)\n",
    "        metric_history[\"val\"].append(val_metric)   \n",
    "        \n",
    "        if val_loss < best_loss:\n",
    "            best_loss = val_loss\n",
    "            best_model_wts = copy.deepcopy(model.state_dict())\n",
    "            \n",
    "            torch.save(model.state_dict(), path2weights)\n",
    "            print(\"Copied best model weights!\")\n",
    "            \n",
    "        lr_scheduler.step(val_loss)\n",
    "        if current_lr != get_lr(opt):\n",
    "            print(\"Loading best model weights!\")\n",
    "            model.load_state_dict(best_model_wts) \n",
    "            \n",
    "        print(\"train loss: %.6f, dice: %.2f\" %(train_loss,100*train_metric))\n",
    "        print(\"val loss: %.6f, dice: %.2f\" %(val_loss,100*val_metric))\n",
    "        print(\"-\"*10) \n",
    "        \n",
    "\n",
    "    model.load_state_dict(best_model_wts)\n",
    "    return model, loss_history, metric_history        \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "opt = optim.Adam(model.parameters(), lr=3e-4)\n",
    "lr_scheduler = ReduceLROnPlateau(opt, mode='min',factor=0.5, patience=20,verbose=1)\n",
    "\n",
    "path2models= \"./models/\"\n",
    "if not os.path.exists(path2models):\n",
    "        os.mkdir(path2models)\n",
    "\n",
    "params_train={\n",
    "    \"num_epochs\": 100,\n",
    "    \"optimizer\": opt,\n",
    "    \"loss_func\": loss_func,\n",
    "    \"train_dl\": train_dl,\n",
    "    \"val_dl\": val_dl,\n",
    "    \"sanity_check\": False,\n",
    "    \"lr_scheduler\": lr_scheduler,\n",
    "    \"path2weights\": path2models+\"weights.pt\",\n",
    "}\n",
    "\n",
    "model,loss_hist,metric_hist=train_val(model,params_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "num_epochs=params_train[\"num_epochs\"]\n",
    "\n",
    "plt.title(\"Train-Val Loss\")\n",
    "plt.plot(range(1,num_epochs+1),loss_hist[\"train\"],label=\"train\")\n",
    "plt.plot(range(1,num_epochs+1),loss_hist[\"val\"],label=\"val\")\n",
    "plt.ylabel(\"Loss\")\n",
    "plt.xlabel(\"Training Epochs\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# plot accuracy progress\n",
    "plt.title(\"Train-Val Accuracy\")\n",
    "plt.plot(range(1,num_epochs+1),metric_hist[\"train\"],label=\"train\")\n",
    "plt.plot(range(1,num_epochs+1),metric_hist[\"val\"],label=\"val\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.xlabel(\"Training Epochs\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
